package chat

import (
	"gohub/pkg/config"
	"sync"
)

// Message 消息的结构体
type Message struct {
	Template string
	Data     map[string]string

	Content string
}

// 操作类
type CHAT struct {
	Driver Driver
}

// once 单例模式
var once sync.Once

// internalCHAT 内部使用的 CHAT 对象
var internalCHAT *CHAT

// 单例模式获取
func NewCHAT() *CHAT {
	once.Do(func() {
		internalCHAT = &CHAT{
			Driver: &SiliconFlow{},
		}
	})

	return internalCHAT
}

func (chat *CHAT) ChatCompletion(message Message) (interface{}, error) {
	return chat.Driver.ChatCompletion(message, config.GetStringMapString("chat.siliconflow"))
}
